package com.scala.zhenghui

/**
 * Created by ibf on 2018/1/21.
 */
object Val_Var {
  //main方法
  //定义一个方法，def
  // 接受的参数args: Array[String]     ==== java:String[] args
  //Array就是scala中的数组
  //java  public static void main
  //void  = Unit
  def main(args: Array[String]) {
    val i: Int = 123
    var ii: Int = 12
    val str1: Char = 's'
    var str2: String = "abc"
    val i_D: Double = 123.2
    var ii_F: Float = 12f
    val flag: Boolean = true
    //java的打印方式
    System.out.print(i)
    print(ii)
    println(str1)
    println(str2)
    //val和var的区别
    //val用在常数上，var用在变量上
    // error: reassignment to val
    //i = 1234   str1 = "abc"
    //var是可以做改变的，没有问题
    ii = 1234
    str2 = "abc"

    //val str = "asdasd"
    //cmd当中，回显字符串str: String = asdasd
    //scala当中，有自动类型推断，当用户没有写明变量的类型的时候，scala会自动给定类型
    //java的类型的声明和scala的区别
    //在java中 String str = "AD"
    var str: String = "AD"

    /**
     * lazy 懒加载
     * 用在当某些变量在同一个类当中，不一定会被所有方法调用，而且这几个变量是不会改变的
     * lazy val url:String = jdbc:mysql://localhost:3306/test
     * lazy val user:String = root
     * 当遇到以上的情况的时候，就可以使用懒加载来节省内存空间
     */
    lazy val url = "jdbc:mysql://localhost:3306/test"

    /**
     * scala的字符串的用法
     * 1、直接使用双引号来定义字符串
     * 2、当字符串当中有一些特殊符号的时候，考虑：是否使用转义字符 \
     * 3、实在不想使用转义字符
     */
    val str_1 = "我是一个字符串"
    val str_2 = "我是一个\"字\"符串"
    val str_3 =
      """我是一个
        |"
        |字
        |"
        |符串
      """.stripMargin
    val str_4 =
      """
        |SELECT
        |name,age,grade,
        |count(name)
        |FROM
        |student
        |GROUP BY name
      """.stripMargin
    val str_5 = "select name,age,grade,count(name) from student group by name"
    print("str_1 : " + str_1)
    print(s"str_2 : ${str_2}")
    print("str_3 : " + str_3)
    //Symbol类型
    val sy: Symbol = 'bb
    //它是一个高速高效的String类
    print(sy)

  }
}
